The present invention relates generally to the communication of electronic data between computer systems, and more specifically, to the filtering and routing of electronic messages communicated by computer systems.
In recent years there has been a great increase in the amount of computer technology that is involved in daily life. In today""s world, computer technology is involved in many aspects of a person""s day. Of course, much of the population works with desktop computers at home and/or at work. However, desktop computers are not the only items that utilize computer technology. Many devices being used today by consumers have a small computer inside of the device. These small computers come in varying sizes and degrees of sophistication. These small computers include everything from one microcontroller to a fully-functional complete computer system. For example, these small computers may be a one-chip computer, such as a microcontroller, a one-board type of computer, such as a controller, a typical desktop computer, such as an IBM-PC compatible, etc.
The computers almost always have one or more processors at the heart of the computer. Typical desktop computers have input devices, such as a keyboard, a mouse, etc., and they also have output devices, such as a monitor, speakers, a printer, etc. The processor(s) usually are interconnected to different external inputs and outputs and function to manage the particular computer or device. For example, a processor in a vending machine for soda pop may be connected to the buttons used to select the pop, to the switch that allows a pop to drop down to a user, and to lights to indicate that the machine does not have any more pop of a particular variety.
Computer technology is involved in many aspects of today""s world. Many appliances, devices, etc., include one or more small computers. For example, refrigerators, telephones, typewriters, automobiles, vending machines, and many different types of industrial equipment all have small computers, or processors, inside of them. Computer software runs the processors of these computers and tells the processors what to do to carry out certain tasks. For example, the computer software running on a processor in a vending machine may cause a soda pop to drop to a user when the correct change has been entered by a user.
With the expanding use of computer systems and the increasing number of devices and users that may be communicating using computer technology, large volumes of information are exchanged over computer networks between computers. For example, a computer may be used to relay messages between another computer, a printer, a monitor, a fax machine, a cellular phone, several different e-mail accounts, etc. Some systems can be large enough that millions of messages are being sent between the computers or devices connected to the system. Such a high volume of messages can slow down the processing ability of the system and utilize large amounts of memory.
It is desired that electronic communications be sent to interested computers and/or devices and to reduce the amount of unnecessary communications and to also reduce the amount of processing power required to achieve the communication.
In view of the foregoing, it is an object of the present invention to provide systems and methods for routing electronic messages that are sent between computer systems.
Consistent with the foregoing objects, and in accordance with the embodiments as embodied and broadly described herein, a method for routing input messages practiced in accordance with embodiments herein may include the steps of examining a plurality of interest data sets, each having a value that indicates specific data that is of interest, creating a filter tree from the plurality of interest data sets where each node of the filter tree accurately describes child nodes in such a way that input messages may be properly passed to any terminal nodes of the tree which have a value that describes the input messages, examining the input messages, comparing the input messages to the root node of the filter tree to determine if an input message should pass the root node, and, as long as the input message passes a current node, comparing the input message with the child nodes of the current node in order to effectively pass the input message to any terminal nodes of the tree having a value that describes the input message.
In an embodiment, an input message may be in the form of an electronic message sent by a computer system in electronic communication with a computer implementing the filter or routing method. Also, once the input message is passed to a terminal node with a value descriptive of the input message, the input message may be sent to a receiving computer system. Another embodiment of the invention may include interest data sets which also include a mask.
A computer system for routing electronic messages sent by sending computers in electronic communication with the system is disclosed as including a terminal node level. This level resides at level N. The terminal nodes include a mask and value which specify relevant portions of the input data and indicate a particular data value of interest, respectively. The system also includes a root node level residing at level one. The root node includes a mask and a range of values which specify relevant portions of the input message and indicate a range of values for desirable input data. Further included in the system are one or more intermediate levels residing at levels two to (Nxe2x88x921). These levels include nodes having a mask and a range of values describing desirable input messages. The levels of the system are interconnected in a tree structure such that input messages may be propagated down one or more branches of the tree structure to arrive at any terminal nodes of the tree having a value that describes the input message.
In an embodiment where the input message and interest data are embodied in binary formats, a parent node in any intermediate level is created by combining the masks and values of its child nodes in various logical processes such that the mask and range of values of the parent node accurately describes the values and masks of its child nodes.